Computer systems are typically provided with access to one or more storage devices. The storage devices may be attached directly to the computer system itself. For example, a personal computer (PC) such as a laptop or desktop computer may include one or more attached storage devices such as a hard disk drive, a compact disk (CD), magnetic storage, etc. Alternately, or in addition to, the computer system may have access to remote storage devices, such as over a network. For example, a workstation may have remote access to a network storage device such as a fibre channel Storage Area Network (SAN), a Network Attached Storage (NAS) device, etc. Or for example, a workstation may have remote access to a shared hard disk drive or other storage device attached to a server or other workstation that is available over a network.
The performance of a storage device, whether attached or remote, depends on a number of factors, such as the extent of use, type of use, etc. Over time and with use, the performance of the storage device may decline or even fail altogether. Declining performance and/or complete failure of a storage device may result in lost data, time and money, not to mention frustration for anyone needing access to the data stored thereon. In addition, when a storage device fails altogether, the data on the failed device may be irretrievable.
One solution for optimizing the performance of a storage device is to defragment it. During a defragmenting operation, similar files and file segments may be grouped together on the storage device so that these files and file segments may be more readily accessed. However, defragmenting operations often take time to perform, and may be interrupted if the storage device is accessed during the defragmenting operation. In addition, defragmenting operations typically group all similar or like files with one another, without first assessing the need to do. As such, a time consuming defragmenting operation may not improve the performance of the storage device.
When a storage device fails altogether, data recovery may include an attempt to recover the data from the failed storage device itself. In some situations, the data may be recovered. However, such recovery may take considerable time before the data can be retrieved from the failed storage device and rewritten to another storage device. The data remains inaccessible during the recovery operation. In addition, this solution may be costly depending on the type of storage media and the extent of the failure. In some circumstances, the data may not even be recoverable.
Another, more common solution for data recovery, is to back-up data from one storage device to another storage device prior to a device failure. However, the user does not know when a storage device will fail, and hence the user does not know when to perform the back-up operation. Device failures often start out as what are called “recoverable” failures. That is, when an attempt to access data on the storage device fails, the storage device itself may retry or make another attempt to access the data thereon. Alternately, the storage device may report the failed attempt to the operating system, which may retry or make another call to the storage device to access the data thereon. In any event, when a retry is successful, nothing is reported to the user. As such, any potential problems with the storage device are “masked” to the user, and the user does not know of a potential failure of the storage device until it actually occurs.
Typically, the user must back-up data on the storage device to another storage device on a regular basis. However, even when data is backed-up on a regular basis, the user still does not know when the storage device will fail. As such, some data may still be lost when the storage device fails. That is, the data added or changed after the last back-up may not be recoverable when the storage device fails. Although more frequent back-ups may reduce the amount of lost data when the storage device fails, back-up operations take time to perform, and may slow other functions of the computer system while being performed. In addition, there may still be some data that is changed and/or added after the last back-up, and thus that data may be lost when the storage device fails.